const jwt = require('jsonwebtoken')
const userService = require('../service/user.service')
const { PRIVATE_KEY } = require('../app/config')
const wrapper = require('../wrapper')

class AuthController {

  // 普通登录
  login(ctx, next) {  // 生成token
    try {
      // 1.获取用户信息
      const { id, nickname } = ctx.user
      delete ctx.user.password
      // 2.生成token
      const token = jwt.sign({ id, nickname }, PRIVATE_KEY, {
        expiresIn: 60 * 60 * 24,  // 过期时间
        algorithm: 'RS256'  // 加密方式
      })
      // 3.返回数据
      ctx.body = wrapper.wrapTo200({ ...ctx.user, token })
    } catch (error) {
      ctx.body = wrapper.wrapTo500(null, "生成token失败")
    }
  }

  // token 登录
  async authLogin(ctx, next) {
    try {
      const { id, nickname } = ctx.user
      const res = await userService.Authlogin(id, nickname)
      const result = res[0]
      delete result.password
      const token = jwt.sign({ id, nickname }, PRIVATE_KEY, {
        expiresIn: 60 * 60 * 24,  // 过期时间
        algorithm: 'RS256'  // 加密方式
      })
      ctx.body = wrapper.wrapTo200({ ...result, token })
    } catch (error) {
      ctx.body = wrapper.wrapTo500(null, "token 登录失败")
    }
  }

}

module.exports = new AuthController()
